import os

from langchain_core.prompts import PromptTemplate
from langchain_ollama import OllamaLLM

from Knowledge.pg_store import insert_into_pg
from Knowledge.md_mineru_parse import parse_markdown
from Knowledge.milvus_store import insert_into_milvus
from Search.route import select_knowledge_base

llm = OllamaLLM(model="deepseek-r1:70b", base_url="http://192.168.7.3:11434")


import os

def main():
    folder_path = r"/Users/acerola/Desktop/部门知识处理后/"
    if not os.path.exists(folder_path):
        print("📁 文件夹不存在，请检查路径")
        return

    md_files = [f for f in os.listdir(folder_path) if f.endswith('.md')]
    if not md_files:
        print("❗ 文件夹下没有 .md 文件")
        return

    for md_file in md_files:
        md_path = os.path.join(folder_path, md_file)
        filename = os.path.basename(md_path)

        print(f"📄 正在处理: {filename}")

        try:
            with open(md_path, "r", encoding="utf-8") as f:
                md_text = f.read()

            # 解析 Markdown
            parent_docs, child_docs = parse_markdown(md_text, filename)

            # 存入 PostgreSQL（父文档）
            insert_into_pg(parent_docs)

            # 存入 Milvus（子文档）
            insert_into_milvus(child_docs)

            print(f"✅ {filename} 处理完成！")
        except Exception as e:
            print(f"❌ 处理 {filename} 时出错: {e}")

    print("🎉 所有文件处理完毕！可以开始检索。")



if __name__ == "__main__":
    # main()
    query = "日常生活中常见的VOCs有哪些?"
    results = select_knowledge_base(query)
    print("\n🔍 查询结果：")
    for i, doc in enumerate(results):
        print(f"\n📄 结果 {i + 1}:")
        print(doc)
    # 将多个文档合并为一个文本
    text = "\n\n".join(results)

    prompt = PromptTemplate(
        input_variables=["query", "text"],
        template=(
            "你是一名专业的环境科学专家。\n\n"
            "请根据以下提供的文本，回答用户的问题。\n"
            "如果文本中包含相关信息，请使用专业、准确的语言回答。\n"
            "如果文本中没有足够的信息，请直接回答：我不知道。\n\n"
            "### 用户问题：\n{query}\n\n"
            "### 参考文本：\n{text}\n\n"
            "请输出清晰、专业的回答，不要输出无关信息。"
        ),
    )
    response = llm.invoke(prompt.format(query=query, text=text)).strip()
    print("\n🤖 LLM 回答：")
    print(response)
